package cn.com.djin.ssm.service;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

/**
 *   
 * @author djin
 *   基础业务层接口
 * @param <T>  实体类泛型
 */
public interface BaseService<T> {
    
	/**
	 *   添加
	 * @param t 参数对象
	 * @return   添加结果
	 * @throws Exception
	 */
	String saveT(T t) throws Exception;
	
	/**
	 *   修改任意字段
	 * @param t 参数对象
	 * @return  修改结果
	 * @throws Exception
	 */
	String updByPramas(T t) throws Exception;
	/**
	 * 根据条件（无条件）查询多个结果
	 * @param t
	 * @param page
	 * @param limit
	 * @return
	 * @throws Exception
	 */
	List<T> findManyByPramas(T t,Integer page,Integer limit)throws Exception;
	

    //根据条件（无条件）查询多个结果
  	List<T> findManyByPramas(T t) throws Exception;
	
	/**
	 *   查询所有数据信息
	 * @return  对象集合
	 * @throws Exception
	 */
	List<T> findAll() throws Exception;
	
	  //根据条件查询单个结果
    T findObjectByPramas(T t) throws Exception;
    
  //根据条件分页查询，一般分页
  	List<T> findPageByPramas(Integer page,Integer limit,T t) throws Exception;
	
	/**
	 *   根据id查询单个结果集对象
	 * @param id  对象id
	 * @return  单个结果集对象
	 * @throws Exception
	 */
	T findTById(String id) throws Exception;
	
	/**
	 *   根据id删除
	 * @param id  数据id
	 * @return  删除结果
	 * @throws Exception
	 */
	String removeById(String id) throws Exception;
	
	/**
	 *   根据id批量删除
	 * @param ids  数据id数组
	 * @return  删除结果
	 * @throws Exception
	 */
	String removeBatch(String[] ids) throws Exception;
	
	/**
	 *   根据有（无）条件分页查询
	 * @param t  参数对象
	 * @param page  当前页
	 * @param limit  每一页显示的数据条数
	 * @return  Map数据集合
	 * @throws Exception
	 */
	Map<String,Object> findLsitByPramas(T t,Integer page,Integer limit) throws Exception;
	
	/**
     *   根据多个条件查询单个数据
     * @param t  条件对象参数
     * @return  数据对象
     * @throws Exception
     */
	T findTByPramas(T t) throws Exception;
	
	//获取表的数据记录条数
	Long findTotalByPramas(T t) throws Exception;
	
	
}
